﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

using BDConexion;
using Entidades;

namespace CapaDatos
{
   public class DetallePedidoDAO
    {

        private conexionBD conn = new conexionBD();
        private SqlCommand cmdDetallePedido = new SqlCommand();

        public string insertarDetalle(List<DetallePedido> listaDetalle)
        {
            string rpta = "";
            int registros = 0;
            try
            {
                cmdDetallePedido.Parameters.Clear();
                cmdDetallePedido.CommandType = CommandType.StoredProcedure;
                cmdDetallePedido.CommandText = "SP_Insertar_DetallePedido";
                cmdDetallePedido.Connection = conn.conectarBD();
                foreach (DetallePedido det in listaDetalle)
                {
                    cmdDetallePedido.Parameters.Clear();
                    cmdDetallePedido.Parameters.AddWithValue("@pIdDetalle", det.IdDetalle);
                    cmdDetallePedido.Parameters.AddWithValue("@pIdPedido", det.IdPedido);
                    cmdDetallePedido.Parameters.AddWithValue("@pIdProducto", det.IdProducto);
                    cmdDetallePedido.Parameters.AddWithValue("@pCantidad", det.Cantidad);
                    cmdDetallePedido.Parameters.AddWithValue("@pPrecioVenta", det.PrecioVenta);
                    cmdDetallePedido.Parameters.AddWithValue("@pDescuento", det.Descuento);
                    cmdDetallePedido.Parameters.AddWithValue("@pImporte", det.Importe);
                    registros = cmdDetallePedido.ExecuteNonQuery();
                    
                }
               
                if (registros>0)
                {
                    rpta = "OK";
                }
                else
                {
                    rpta = "Error en la transacción";
                }
               
            }
            catch (Exception ex)
            {
                
                 System.Console.Write(ex.Message);
            }
            return rpta;
        
         
        }


        public string insertarDetallePedido(DetallePedido DT)
        {
            string rpta = "";
            try
            {
                cmdDetallePedido.Parameters.Clear();
                cmdDetallePedido.CommandType = CommandType.StoredProcedure;
                cmdDetallePedido.CommandText = "SP_Insertar_DetallePedido";
                cmdDetallePedido.Connection = conn.conectarBD();
                {
                    cmdDetallePedido.Parameters.AddWithValue("@pIdDetalle", DT.IdDetalle);
                    cmdDetallePedido.Parameters.AddWithValue("@pIdPedido", DT.IdPedido);
                    cmdDetallePedido.Parameters.AddWithValue("@pIdProducto", DT.IdProducto);
                    cmdDetallePedido.Parameters.AddWithValue("@pCantidad", DT. Cantidad);
                    cmdDetallePedido.Parameters.AddWithValue("@pPrecioVenta", DT. PrecioVenta);
                    cmdDetallePedido.Parameters.AddWithValue("@pDescuento", DT. Descuento);
                    cmdDetallePedido.Parameters.AddWithValue("@pImporte", DT.Importe);
       
                   }
                int registros;
                registros = cmdDetallePedido.ExecuteNonQuery();
                if (registros == 1)
                {
                    rpta = "OK";
                }
                else
                {
                    rpta = "Error al Insertar DetallePedido";
                }


            }
            catch (Exception ex)
            {

                System.Console.Write(ex.Message);
            }
            return rpta;
        }

        public string actualizarDetallePedido(DetallePedido DT)
        {
            string rpta = "";
            try
            {
                cmdDetallePedido.Parameters.Clear();
                cmdDetallePedido.CommandType = CommandType.StoredProcedure;
                cmdDetallePedido.CommandText = "SP_Actualizar_DetallePedido";
                cmdDetallePedido.Connection = conn.conectarBD();
                {
                    cmdDetallePedido.Parameters.AddWithValue("@pIdDetalle", DT.IdDetalle);
                    cmdDetallePedido.Parameters.AddWithValue("@pIdPedido", DT.IdPedido);
                    cmdDetallePedido.Parameters.AddWithValue("@pIdProducto", DT.IdProducto);
                    cmdDetallePedido.Parameters.AddWithValue("@pCantidad", DT.Cantidad);
                    cmdDetallePedido.Parameters.AddWithValue("@pPrecioVenta", DT.PrecioVenta);
                    cmdDetallePedido.Parameters.AddWithValue("@pDescuento", DT.Descuento);
                    cmdDetallePedido.Parameters.AddWithValue("@pImporte", DT.Importe);
                }
                int registros;
                registros = cmdDetallePedido.ExecuteNonQuery();
                if (registros == 1)
                {
                    rpta = "OK";

                }
                else
                {
                    rpta = "Error al Detalle Pedido";
                }
            }
            catch (Exception ex)
            {

                System.Console.Write(ex.Message);
            }

            return rpta;


        }

        public List<DetallePedido> listarDetallePedido()
        {
            List<DetallePedido> lista = new List<DetallePedido>();
            DetallePedido DT;
            SqlDataReader lector;
            try
            {
                cmdDetallePedido.Parameters.Clear();
                cmdDetallePedido.CommandType = CommandType.StoredProcedure;
                cmdDetallePedido.CommandText = "SP_Listar_DetallePedido";
                cmdDetallePedido.Connection = conn.conectarBD();

                lector = cmdDetallePedido.ExecuteReader();

                while (lector.Read())
                {
                    DT = new DetallePedido();
                    DT.IdDetalle = (int)(lector[0]);
                    DT.IdPedido = (int)lector[1];
                    DT.IdProducto = (char)lector[2];
                    DT.Cantidad = (char)lector[3];
                    DT.PrecioVenta = (char)lector[4];
                    DT.Descuento = (char)lector[5];
                    DT.Importe = (float)(lector[6]);
                
       
                    lista.Add(DT);
                }

            }
            catch (Exception ex)
            {

                System.Console.Write(ex.Message);
            }
            return lista;

        }

        public DetallePedido buscarDetallePedidoById(int id)
        {
            DetallePedido DT = new DetallePedido();
            SqlDataReader lector;
            try
            {
                cmdDetallePedido.Parameters.Clear();
                cmdDetallePedido.CommandType = CommandType.StoredProcedure;
                cmdDetallePedido.CommandText = "SP_BuscarDetallePedidoById";
                cmdDetallePedido.Connection = conn.conectarBD();

                {
                    cmdDetallePedido.Parameters.AddWithValue("@pIdDetalle", id);

                }
                lector = cmdDetallePedido.ExecuteReader();
                if (lector.Read())
                {
                 
                    DT.IdDetalle = (int)(lector[0]);
                    DT.IdPedido = (int)lector[1];
                    DT.IdProducto = (char)lector[2];
                    DT.Cantidad = (char)lector[3];
                    DT.PrecioVenta = (char)lector[4];
                    DT.Descuento = (char)lector[5];
                    DT.Importe = (float)(lector[6]);
                }

            }
            catch (Exception ex)
            {

                System.Console.Write(ex.Message);
            }

            return DT;
        }

        public int codDetallePedido()
        {
            int codigo = 0;
            SqlDataReader lector;
            cmdDetallePedido.Parameters.Clear();
            cmdDetallePedido.CommandType = CommandType.StoredProcedure;
            cmdDetallePedido.CommandText = "SP_Generar_Codigo_DetallePedido";
            cmdDetallePedido.Connection = conn.conectarBD();

            lector = cmdDetallePedido.ExecuteReader();
            if (lector.Read())
            {
                codigo = (int)lector[0];
            }
            return codigo;

        }
    }
}
